package com.guagua.vas.util;

/**
 * 北京八度互联科技有限公司版权所有
 * Copyright (C) Badu Corporation. All Rights Reserved
 */

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/***************************************************************************************************************************************************************
 * 类概要:时间工具类，对时间日期的相关处理
 * 
 * @author 郑国英
 * @version 2012-3-20 上午10:00:00 ******************************************************************
 */
public class DateUtil {
	/**
	 * 函数说明：将字符串型的时间按照定义的格式转化为时间戳，long型 <br/>
	 * 
	 * @param datestr
	 *            类型:(String)；<br/> 含义: 时间、日期的字符串格式<br/>；
	 * @param format
	 *            类型:(String)；<br/> 含义: 对字符串时间的格式描述<br/>；
	 * @return 返回结果说明. （long）返回转化后的时间戳
	 */
	// 将字符串型的时间按照定义的格式
	// 转化为时间戳，long型
	public static long date2long(String datestr, String format) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			Date date = sdf.parse(datestr);
			return date.getTime();
		}
		catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;
	}

	/**
	 * 函数说明：将时间戳型的时间按照定义的格式转化为时间的字符串 <br/>
	 * 
	 * @param datelong
	 *            类型:(long)；<br/> 含义: 时间戳<br/>；
	 * @param format
	 *            类型:(String)；<br/> 含义: 时间戳转化为字符串的格式<br/>；
	 * @return 返回结果说明. （String）返回转化后的字符串
	 */
	// 将时间戳型的时间按照定义的格式
	// 转化为时间的字符串
	public static String long2date(long datelong, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date date = new Date();
		date.setTime(datelong);
		return sdf.format(date);
	}

	/**
	 * 函数说明：将时间戳型的时间按照定义的格式转化为时间的字符串 <br/>
	 * 
	 * @param date
	 *            类型:(Date)；<br/> 含义: 日期对象<br/>；
	 * @param format
	 *            类型:(String)；<br/> 含义: 转化为字符串的格式<br/>；
	 * @return 返回结果说明. （String）返回转化后的字符串
	 */
	// 时间按照定义格式转化为字符串型
	public static String date2string(Date date, String format) {
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(format);

			return sdf.format(date);
		}
		catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}
	/**
	 * 函数说明：时间增加减少天数 <br/>
	 * 
	 * @param date
	 *            类型:(Date)；<br/> 含义: 日期对象<br/>；
	 * @param day
	 *            类型:(int)；<br/> 含义: 增加或减少的天数，增加为正值，减少为负值<br/>；
	 * @return 返回结果说明. （String）返回转化后的字符串
	 */
	// 时间增加减少天数
	// 如果是增加，则day为正值
	// 如果是减少,则day为负值
	public static Date addDate(Date date, int day) {
		Calendar fromCal = Calendar.getInstance();
		// fromCal.setTime(date);
		fromCal.add(Calendar.DAY_OF_MONTH, day);
		return fromCal.getTime();
	}

	/**
	 * 函数类型： 日期函数 <br/> 
	 * 功能：按照中国日历习惯，根据年，周数查询该周第一天的日期 <br/>
	 * 
	 * @param theyear
	 *            类型:(int)；<br/> 含义:年份<br/>；
	 * @param theweek
	 *            类型:(int)；<br/> 含义:周数<br/>；
	 * @return 返回该周第一天的日期，日期格式为yyyy-MM-dd.
	 */
	public static String getFirstYearOfWeek(int theyear, int theweek) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		c.setMinimalDaysInFirstWeek(7);
		c.setFirstDayOfWeek(2);
		c.set(Calendar.YEAR, theyear);
		c.set(Calendar.WEEK_OF_YEAR, theweek);
		c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
		String strdate = sdf.format(c.getTime());
		return strdate;
	}

	public static void main(String[] args) {
	

	}
}
